(function(){"use strict";function l(e){console.warn&&console.warn(e)}function f(e){try{return JSON.parse(atob(e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/")))}catch(t){return l("Failed to decode JWT: "+t.message),null}}function d(){var e=c("tncms-user");if(!e)return null;var t=f(e);return t&&t.app||null}function b(e){window.location.replace?window.location.replace(e):window.location.assign?window.location.assign(e):window.location.href=e}function s(){return document.cookie.indexOf("tncms-user")!==-1||document.cookie.indexOf("tncms-authtoken")!==-1}function E(){var e=d();return e!==null?e.user&&e.user.adm:s()&&c("tncms-isadmin")==!0}function m(){var e=d();return e&&e.user&&e.user.scr?e.user.scr:c("tncms-screenname")}function g(e){var t=window.location.href.split("#"),n=t[0],a=t[1];if(n.indexOf("_dc="+e)>-1){l("Attempt to auto-fix logged/anonymous view failed");return}n.indexOf("?")>-1?n+="&_dc="+e:n+="?_dc="+e,a&&(n+="#"+a),b(n)}function c(e){for(var t=e+"=",n=document.cookie.split(";"),a=0;a=o-5*60*1e3)return;localStorage.removeItem(n)}if(!u){localStorage.setItem(t,o);return}if(u>=o-e)return;if(!s()){clearInterval(a);return}localStorage.setItem(n,o);const L=c("tncms_csrf_token");if(!L){l("CSRF token not found for heartbeat");return}const S=new URLSearchParams;S.append("tncms_csrf_token",L),fetch("/tncms/auth/heartbeat",{method:"POST",body:S,headers:{"X-Requested-With":"XMLHttpRequest",Accept:"application/json"},credentials:"same-origin"}).then(function(i){return i.json()}).then(function(i){if(i){if(i.error)throw new Error(i.error);i.logged_in||(oEvent=new CustomEvent("BLOXUserHeartbeatLogout",{detail:{state:"logout",message:i.reason,user:{screen_name:h}}}),document.dispatchEvent(oEvent),clearInterval(a)),localStorage.setItem(t,o),localStorage.removeItem(n)}}).catch(function(i){let I=new CustomEvent("BLOXUserHeartbeatError",{detail:{state:"error",message:i.message,user:{screen_name:h}}});document.dispatchEvent(I)}).finally(function(){localStorage.removeItem(n)})}return function(){!s()||!window.localStorage||(document.addEventListener("BLOXUserHeartbeatLogout",function(o){l("User logged out by heartbeat");let u=new Event("TNCMSUserLogout");u.user={screen_name:o.detail.user.screen_name},document.dispatchEvent(u)}),document.addEventListener("BLOXUserHeartbeatError",function(o){console.error("Heartbeat exception: "+o.detail.message)}),r(),a=setInterval(r,e),document.addEventListener("visibilitychange",r))}}();window.TNCMS||(window.TNCMS={}),window.TNCMS.User={getScreenName:m,getFirstName:function(){return this.getClaim("user","fn")},getLastName:function(){return this.getClaim("user","ln")},getEmail:function(){return this.getClaim("user","em")},getCreateTimestamp:function(){return this.getClaim("user","crt")},getAvatarURL:function(){var e=d();return e&&e.user&&e.user.ava?e.user.ava:c("tncms-avatarurl")},hasPersistentSession:s,hasWebauthnCredential:function(){return!!c("tncms-webauthn-available")},hasFullAccess:function(){var e=c("tncms-user");if(!e)return!1;var t=f(e);return t?!t.ro:!1},isLoggedIn:s,isAdmin:E,getClaim:function(e,t){var n=d();return n!==null&&n[e]!==void 0&&n[e][t]!==void 0?n[e][t]:null},validateAnonymousView:function(){s()&&g("logged_in")},validateLoggedInView:function(){s()||g("anonymous")},restorePersistentSession:function(){}};function v(){C()}document.readyState==="loading"?v():document.addEventListener("DOMContentLoaded",v)})(); //# sourceMappingURL=user.js.map